嗨各位,相信各位一定有用過最近很夯的 Bard
或是 ChatGPT
吧?
像是這種生成式AI(Generative AI)的訓練往往需要用到大量的 GPU
而在 Proxmox VE 的環境中,VM 預設是沒辦法直接存取到宿主的 PCIE 裝置的(以這個例子來說是 GPU,然後我們只討論外接顯示卡不討論內顯or版載之類的情境)
這時候我們就需要由宿主機(host)把 GPU(PCIE裝置) 的控制權交給我們的 VM 啦(也就是 GPU-Passthrough
)
首先,我們先把 grub
裡的開機參數 ( 位於 /etc/default/grub ) 新增 iommu
,來讓我們的 VM 可以存取宿主機(host)的硬體資源
並且讓 Linux Kernel 在載入時,不去載入 EFI framebuffer
以避免在開機過程中 GPU 被宿主機(host)搶去
AMD CPU 會是 amd_iommu
,而 Intel CPU 會是 intel_iommu
nano /etc/default/grub
/etc/default/grub
...
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off"
...
然後我們更新 /boot
分區的開機檔案
update-grub
完成後,我們去新增 IOMMU
會用到的 Kernel Module
nano /etc/modules
/etc/modules
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
最後,在宿主機(host)的設定裡,我們將可能會嘗試使用到 GPU 的 Kernel Module
nano /etc/modprobe.d/blacklist.conf
blacklist radeon
blacklist nouveau
blacklist nvidia
blacklist nvidiafb
blacklist i2c_nvidia_gpu
blacklist snd_hda_intel
blacklist snd_hda_codec_hdmi
blacklist i915
然後更新 initramfs
update-initramfs -u
然後我們快樂重啟
init 6
之後在 Proxmox VE 的 VM 設定中,我們以 root
的身份登入後
在 VM 的硬體中新增 PCI裝置
(因為只有 root
能直接新增宿主機資源)
然後選擇對應的裝置(我的是 Tesla P4)
完成後,我們將 VM 開機
順利的話就能存取到對應的 PCI 裝置了
在這些搞 GPU passthrough
的過程中,這兩份參考資料我個人覺得不錯
Proxmox VE 官方文件: PCI Passthrough
參考文章: How to Set Up GPU Passthrough on Proxmox
各位我們明天見